home *** CD-ROM | disk | FTP | other *** search
/ Commodore Free 26 / Commodore_Free_Issue_26_2009_Commodore_Computer_Club.d64 / dcn2692 part 2 < prev    next >
Text File  |  2023-02-26  |  15KB  |  538 lines

  1.  
  2.  
  3.  
  4. ..DCN-2692 floppy controller board
  5. http://www.iki.fi/mkl/dcn2692/
  6. PART 2
  7.  
  8. ROM types
  9. Atmel FLASH PEROM type AT29C010AP
  10. (128 KBytes) is used here. It is
  11. reprogrammable without extra
  12. programming voltages, and it is
  13. possible to reprogram it in-system.
  14. The ROM socket should also accept
  15. other types of ROMs, including 28-pin
  16. types, which should be inserted
  17. correctly to the 32-pin socket. It
  18. needs to be at least 32 KiloBytes in
  19. size to hold the original ROM content
  20.  
  21. Ready signal
  22. PC-drives differ from the standard.
  23. One thing missing is the drive ready
  24. signal. Standard drives assert this
  25. signal when the floppy disk is
  26. spinning at a steady speed and is
  27. ready to be read from or written onto
  28. It should take about a half second
  29. after the motor has been turned on.
  30. If it takes too long, the 1581 will
  31. give an error, saying drive not ready
  32. This signal is emulated by R15, R14,
  33. D1, C10, and a buffer in IC10. The
  34. component values were changed between
  35. V0.0.4 and V0.1.0. There is a slim
  36. chance that a PC floppy drive has the
  37. Ready signal somewhere on its circuit
  38. board.
  39.  
  40. Compatibility with Commodore 1581
  41. This should be compatible. But I had
  42. trouble with cbm4win and my PC;
  43. copying files to dcn-2692 caused the
  44. transfer to hang many times, but this
  45. could have happened because of the
  46. slow transistors I used in the XA1541
  47. adapter. There are known differences,
  48. but I don't know whether these cause
  49. any compatibility issues: The lowest
  50. 16 KBytes of SRAM is visible at the
  51. lowest 16 KByte range of the 6502.The
  52. C1581 has 8 KBytes of RAM, and it is
  53. (IIRC) mirrored to 6502 address space
  54. 2000..3FFF. The ready signal from the
  55. floppy drive is simulated so,that the
  56. CIA senses the simulated "ready"going
  57. low (=active) about 0.5 seconds after
  58. the CIA drives the "motor" signal of
  59. the floppy drive low (=active.)
  60.  
  61. Please note that I haven't tested the
  62. board with the C128 fast burst
  63. transfer mode.
  64.  
  65. CPLD files and download cable
  66. schematic Some of the logic (e.g.
  67. glue logic, etc.) is placed on a
  68. programmable logic chip. CPLD stands
  69. for Complex Programmable Logic Device
  70. Such an IC and can be user programmed
  71. it can be used instead of standard
  72. TTL/CMOS logic ICs,such as 74LS00 etc
  73. The type used with this board is
  74. Lattice Semiconductor
  75. ispLSI1016E-80LJ (where J stands for
  76. PLCC package.) It should also be
  77. possible to use the ispLSI1016 or
  78. ispLSI1016EA version, and any speed
  79. grade will be fast enough. But it is
  80. needed to recompile the ABEL source
  81. for each version of the CPLD.
  82.  
  83. dcn2.abl ABEL sourcefile for the CPLD
  84. date 20-May-2003  dcn2.jed bitfile
  85. for ispLSI1016E-80LJ download
  86. http://www.students.tut.fi
  87. /{$7e}leinone3/dcn2692/dcn2.jed
  88.  
  89. MODULE dcn2
  90.  
  91. TITLE 'dcn2'
  92. "This version is UNFINISHED, but
  93. provides basic functioning for a
  94. 1581 clone
  95. "20-May-2003
  96. "Projects on the web at
  97. http://www.iki.fi/mkl
  98. "The target CPLD is Lattice
  99. ispLSI1016-E80LJ, or other PLCC-44
  100. ispLSI1016
  101. "use Slowslew pin attribute when
  102. compiling design
  103. "This ABEL file describes three
  104. functionally separate modules. (In
  105. one file to save(?) trouble)
  106. "1. Logic that replaces various
  107. IEC-bus related logic gates and
  108. buffers in the original CBM-1581
  109. "2. Reset/Clock control logic that
  110. "(i) generates a delayed system reset
  111. to CPU, CIA and WD from master reset
  112. "(ii) generates 2 MHz 6502 CPU clock
  113. PHI0, which MUST be running before
  114. reset is removed
  115. "(iii) generates WD1772 clock, which
  116. is selectable between 8 or 16 MHz
  117. "3. Logic to control chip selects,
  118. output and write enables for RAM,
  119. (e)ROM,CIA,WD
  120. "   and manage memory banks of 32
  121. KByte RAM, and ROM (size 32, 64 or
  122. 128 KBytes)
  123. "   and select the WD clock between
  124. 8 or 16 MHz
  125. "   and select the floppy drive unit
  126. (Primary / Secondary)
  127. "After master reset the signals are
  128. as follows:
  129. "WD clock is 8 MHz (as in original
  130. 1581)
  131. "Primary drive signal is active (low)
  132. The same signal will be high for
  133. secondary drive.
  134. "Lowest 16 KB part of RAM is present
  135. at 6502 address $0000-$3fff
  136. "CIA is visible at $4000-$4fff
  137. (registers at $4000-400f)
  138. "WD is visible at $6000-$6fff
  139. (registers at $6000-6003)
  140. "HIGHEST 32 Kbyte of ROM (PROM, ROM,
  141. EPROM or FLASH) is normally at
  142. $8000-$ffff
  143. "SECOND LOWEST 4 KByte of ROM(ROM
  144. address $1000-1fff) is FIXED at
  145. $5000-$5fff.
  146. "A13 is copied to XA13 (the address
  147. pin on RAM/ROM)
  148. "A14 is copied to XA14 (--""--)
  149. "XA15 and XA16 are set to high
  150. "XA13..XA16 outputs are for memory
  151. bank selection
  152. "The configurable outputs and memory
  153. management get their input from CPU
  154. data line D7
  155. "Address line A12 participates in
  156. selecting the configurable registers
  157. at $7000-$7fff
  158. "The configuration data is fed
  159. SERIALLY from D7 using a special
  160. protocol algorithm.
  161. "^^above function not yet implemented
  162.  
  163. "------------------------------------
  164. "IEC logic part of design
  165. PIN DECLARATIONS
  166. "IEC is a name for the
  167. Commodore serial bus
  168. DATA{CBM-@}IN pin 22; "inverted IEC{CBM-@}DATA
  169. line state from IEC BUS
  170. "(signal from 74ls14 inverting
  171. schmitt trigger gate)
  172. DATA{CBM-@}OUT pin 19;  "output to 7406
  173. inverting open collector driver to
  174. IEC{CBM-@}DATA line
  175. ATN{CBM-@}IN pin 20;    "IEC signal...
  176. FCLK{CBM-@}IN pin 21;   "IEC signal...
  177. FCLK{CBM-@}OUT pin 18;  "IEC signal....
  178. "Note: IEC CLK line logic is not
  179. routed via this CPLD
  180. "Signals from/to CIA
  181. DATAIN{CBM-@}CIA pin 4; "to CIA
  182. DATAOUT{CBM-@}CIA pin 5; "from CIA
  183. ATNIN{CBM-@}CIA pin 39; "to CIA
  184. ATNACK{CBM-@}CIA pin 6; "from CIA
  185. FASTDIR{CBM-@}CIA pin 7; "from CIA
  186. FASTCLK{CBM-@}CIA pin 10; "bi-directional
  187. from/to CIA
  188. FASTDATA{CBM-@}CIA pin 9; "bi-directional
  189. from/to CIA
  190. "-----------------------------------
  191. "-----------------------------------
  192. "Control logic PART pin declarations
  193. "inputs
  194. CLK pin 11;
  195.  
  196. PHI2 pin 2;
  197. RnW pin 43;
  198. A12 pin 32;
  199. A13 pin 40;
  200. A14 pin 41;
  201. A15 pin 42;
  202.  
  203. D7 pin 31;
  204.  
  205. "outputs
  206. PHI0 pin 44;
  207. nRESET pin 3 istype 'reg';
  208. WDCLK pin 16;
  209.  
  210. nPRIMDRIVE pin 17;
  211. XA13 pin 26;
  212. XA14 pin 28;
  213. XA15 pin 38;
  214. XA16 pin 37;
  215. nWE pin 27;
  216. nOE pin 29;
  217. nCSROM pin 30;
  218. nCSRAM pin 25;
  219. nCSCIA pin 8;
  220. nCSWD pin 15;
  221.  
  222. "Internal stuff
  223. q7..q0 node istype 'reg';
  224. countteri = [q7..q0]; " set
  225.  
  226. "---------------------
  227.  
  228. "------- LOGIC EQUATIONS -------
  229. equations
  230. "IEC logic equations (this part is
  231. asynchronous logic)
  232. ATNIN{CBM-@}CIA = ATN{CBM-@}IN; "the signal is
  233. only passed to another pin on CPLD
  234. DATAIN{CBM-@}CIA = DATA{CBM-@}IN; "same here...
  235. DATA{CBM-@}OUT = DATAOUT{CBM-@}CIA # (ATN{CBM-@}IN &
  236. ATNACK{CBM-@}CIA) # (FASTDIR{CBM-@}CIA &
  237. !FASTDATA{CBM-@}CIA);
  238. "DATA{CBM-@}OUT controlled by many sources
  239. FCLK{CBM-@}OUT =FASTDIR{CBM-@}CIA & !FASTCLK{CBM-@}CIA;
  240. FASTDATA{CBM-@}CIA = (!DATA{CBM-@}IN);
  241. FASTCLK{CBM-@}CIA = (!FCLK{CBM-@}IN);
  242. FASTDATA{CBM-@}CIA.oe = !FASTDIR{CBM-@}CIA;
  243. "when FASTDIR is low, direction is
  244. towards the CIA
  245. FASTCLK{CBM-@}CIA.oe = !FASTDIR{CBM-@}CIA; 
  246. "and when high, towards the IEC BUS
  247.  buffers.
  248.  
  249. "Control part equations
  250. "All registers are reset to zero by
  251. the dedicated asynchronous reset
  252. input on the CPLD.
  253. "Therefore, register asynchronous
  254. resets are not explicitly described.
  255. "Clock & Reset output control
  256. countteri.clk = CLK; "clock is 32 MHz
  257. countteri:=countteri.fb+1; "counter
  258. function :-)
  259. PHI0=q3; "4 stages divide the
  260. frequency to 32->16->8->4->2 MHz
  261. nRESET.clk = q7;"asynchronous clock
  262. nRESET:='1'; "set reset 2 inactive hi
  263. "WDCLK selection logic below....
  264. WDCLK=q1;
  265. "simple....
  266. nPRIMDRIVE = '0';
  267. nWE = ! (!RnW & PHI2);
  268. nOE = ! RnW;
  269. when ([A15..A12]==5) then [XA16,XA15,
  270. XA14,XA13] = [0,0,0,0];
  271. else      [XA16,XA15,XA14,XA13] =
  272. [1,1,A14,A13]; "ROM banking
  273. "chip selects
  274. nCSROM =! ((A15==1) # ([A15..
  275. A12]==5));" $8000-ffff + $5000-$5fff
  276. nCSRAM =! ([A15,A14]==[0,0]);
  277. "$0000-$3fff
  278. nCSCIA =!([A15..A12]==4);"$4000-$4fff
  279. nCSWD  =!(([A15..A12]==6) & PHI2);
  280. "$6000-$6fff, phi2 is involved...
  281.                    
  282. END
  283.  
  284.  
  285.  
  286. Future versions of cpld will have
  287. registers for extra control of ram,
  288. rom and the drive. I have made some
  289. advancement on developing that
  290. functionality,but it is not ready yet
  291.  
  292. Lattice Semiconductor website
  293. http://www.latticesemi.com/
  294. Download software that programs the
  295. PLD with a .jed bit-file (windblows
  296. pc and perhaps also x86 Linux). They
  297. might ask for registration, etc.
  298. ispLSI download cable
  299. (No guarantee there's no errors, but
  300. it should be almost ok.) You could
  301. use small value (47-100 ohm) series
  302. resistors for signals and a
  303. decoupling capacitor (1-1000 nF)
  304. between VCC and GND.
  305.                     {CBM-@}{CBM-@}
  306. {CBM-@}iE is short for ispEN
  307.  
  308. ISP header {CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}74HC367{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}  LPT
  309. 1 VCC : ->:(16) VCC          : -> 15.
  310. 2 SDO : ->:(2)  1A1- 1Y1 (3) : -> 10.
  311. 3 SDI : <-:(5)  1Y2- 1A2 (4) : <- 2.
  312. 4 {CBM-@}iE : <-:(11) 2Y1- 2A1 (12): <--5.
  313. 5 N.C.:   :           /1OE(1): <-{CBM-H}
  314. 6 MODE: <-:(9)  1Y4- 1A4 (10): <- 4.
  315. 7 GND :<->:(8)  GND          : <->GND
  316. 8 SCLK:<- :(7)  1Y3- 1A3 (6) : <- 3.
  317. {CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}/   :                  :(14)
  318.           :         /2OE (15): <->GND
  319.            :{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}/
  320.                -< 8  Sense loop back
  321.          {$60}-> 12
  322.         
  323.          
  324. Images from from isp download cable
  325. pdf (june 2000.) header pins
  326. http://www.students.tut.fi/{$7e}leinone3
  327. /dcn2692/ispdlckuva1.png
  328. http://www.students.tut.fi/{$7e}leinone3
  329. /dcn2692/ispdlckuva2.png
  330.  
  331. schematic
  332. Image from Lattice isp manual pdf1996
  333. http://www.students.tut.fi/{$7e}leinone3
  334. /dcn2692/ispcable.png
  335.  
  336.  
  337. Version history
  338. PCB Version 0.1.2: I had one pce
  339. factory made.
  340.  
  341. PCB Version 0.1.1: I haven't built
  342. this one. 100 x 100 mm board size.
  343. PCB masks are in a single A4 size
  344. Postscript sheet. All holes are 0.3mm
  345. "drill guide holes",for hand drilling
  346. aide. The schematic is in PNG format.
  347.  
  348. PCB version 0.1.0: 6 pcs of these
  349. came from a PCB factory. A number of
  350. small changes since 0.0.4,for example
  351. 7406 IC is now in DIL-14 package
  352. instead of SMD SOIC-14.
  353.  
  354. PCB version 0.0.4: This is the same
  355. as version 0.0.2 with updated
  356. documents, eg. component values were
  357. added to the schematic. PCB version
  358. 0.0.2: 11 pcs of this board were made
  359. at a PCB factory.
  360.  
  361. PCB version 0.0.1: First prototype,
  362. PCB etched at home.
  363.  
  364. About the components, Some notes
  365. Version 0.0.2 is the same as 0.0.4,
  366. but the schematic diagram v0.0.4 is
  367. updated. (It has component values.)
  368.  
  369. Please note that the BOM (bill of
  370. materials) files are not fully exact
  371. or complete, that means the raw BOMs
  372. are not perfect shopping lists.
  373. The 47 ohm series resistors R10, R11
  374. R17 and R18 are there to protect the
  375. CIA I/O pins from over-current, and
  376. maybe could be omitted and replaced
  377. with solder blobs. The 47 ohm series
  378. resistor R8 and R12 are like source
  379. termination resistors for the clock
  380. lines 32MHz and WDCLK. The value 47
  381. ohm is only a guess, actually a good
  382. value would depend on the impedance
  383. of a transmission line. C1581 also
  384. used ferrite beads in series for
  385. these lines.
  386.  
  387. The power supply line ferrite bead
  388. (FB1, or L1 in some schematic
  389. versions) should be of a higher
  390. current type than the type used for
  391. small signals. If the ferrite gets
  392. saturated, it doesn't do a good job
  393. in suppressing RF noise leaving or
  394. entering the voltage supply connector
  395. I have not actually made any EMI
  396. measurement if this component here
  397. has any significance, or could it be
  398. replace with something better or a
  399. wire link. The power supply connector
  400. does not appear in the genereated
  401. BOMs in the table.The "correct" type
  402. of 5.25"-drive/3.5"-HDD power input
  403. connector is the one which is
  404. normally mounted the other, and not
  405. the other side of the CDROM/3.5"
  406. -HDD/5.25"-floppydrive PCB. The 4-pin
  407. smaller (2.50 mm pitch) power connect
  408. on the board is not actually the same
  409. type that appears in the BOMs, but
  410. instead the type used with 3.5"floppy
  411. disk drives.An 47 ohm SMD resistor
  412. does not appear in the generated BOMs
  413. Its job is to limit the current in
  414. case there is a short circuit to
  415. ground when plugging in the CPLD
  416. programming cable. (This sometimes
  417. happens with my self built
  418. programming cable,which has the other
  419. row of two row flat cable connector
  420. connected to ground.)
  421.  
  422. The ispLSI programming connector
  423. header does not appear in the
  424. generated BOMs except for V0.0.4. It
  425. has an 8-pin 0.1" pitch header, where
  426. one no-connection pin can be removed,
  427. and actually should be removed,
  428. starting from V0.1.1. 74VHCT245 has
  429. been used here because its CMOS
  430. sensitivity allows use of small value
  431. (220 nF) capacitor with a larger
  432. value resistor (1.5 Mohm) in the
  433. Ready signal simulator circuit.
  434. Connector "Floppy" is an 34-pin
  435. IDC connector / dual row pin header,
  436. where one pin (number 3) should be
  437. removed.
  438.  
  439. Bugs
  440. The series base resistor values
  441. (1 kohm) for BC847 npn transistor
  442. values are too small, because the
  443. 6526 type CIA typically sources only
  444. about one milliampere. So resistor
  445. values of R19 and R20 should be
  446. increased to 8.2 kohms.26-march-2006
  447. According to datasheets, the 6502
  448. requires voltage swing to full VCC
  449. (=5 volts) at the clock input. But
  450. the ispLSI1016 only outputs about 4
  451. volts at high logic level. The
  452. controller seems to work despite of
  453. that. Diode D2 in ready-signal-
  454. generator-circuit is superfluous and
  455. may be omitted.There is a bug in the
  456. factory made v0.1.0 PCBs It is a
  457. short missing VCC trace between two
  458. pull-up resistors R26 and R27 on the
  459. underside, near IC4(WD1772). The
  460. missing trace is added in these V010
  461. postscript files below (V0.1.0a in
  462. table), so it is a slight bit
  463. different from the factory made ones
  464. in this good way. Copy paste from
  465. BOM-file for v0.1.0: IC7 (74LS14D)
  466. could be replaced with 74F14D, which
  467. have "stronger" outputs, which might
  468. be needed when driving the signals to
  469. two drives on the same cable,instead
  470. of only one drive on the cable.
  471. Usually each drive has 1 kohm pull up
  472. on the signals. For a logic TTL-low,
  473. an input must sense at most 0.8 volts
  474. and that implies also a current. If
  475. there are two drives on a cable, the
  476. combined pull up resistance would be
  477. 0.5 kohm, which requires more current
  478. sinking capability from the signal
  479. driver.Usage You may use these
  480. documents to build a board, but you
  481. will responsible that you can build
  482. it safely, and not burn your hand
  483. with a soldering iron and not become
  484. blind with dangerous PCB
  485. manufacturing chemicals etc. And of
  486. course there is no warranty that it
  487. will work, or work reliably.
  488.  
  489. COMMODORE FREE
  490. I would like to thank Mika Leinonen"
  491. for the permission to reprint this
  492. information in Commodore free
  493. magazine and although Mika no longer
  494. makes the board due to the shortage
  495. of parts especially the very hard to
  496. find WD1772 Chip Here are the notes
  497. Mika sent me about the board
  498.  
  499. " Hello, I was busy and almost forgot
  500. to answer, but now I do. I haven't
  501. produced more of these, because
  502. WD1772 is very rare. I could make some
  503. boards with socket, where the user
  504. would have to hunt the rare IC.
  505. magazine reprint is ok,"
  506.  
  507. The item was 85 Euros plus postage,
  508.  
  509. REAL LIFE USAGE
  510. The board seemed to function without
  511. problems on the many drives I use,
  512. from multiple manufacturers, I didnt
  513. seem to have any compatibility issues
  514. I am sure now with SD card readers
  515. there is less demand for s user to
  516. load items from floppy disk even if
  517. this is a 3.5" drive unit. However at
  518. the time of purchase for me it seemed
  519. the only cheep way to get a Commodore
  520. 64 into a PC case and load games from
  521. some device. My Idea was purely a
  522. station to load games and to that end
  523. the device worked well(although slow)
  524. I tested the device with fast loader
  525. carts although they seemed to create
  526. no speed advantage. Alan Shaun & I
  527. tested the unit with geos and wheels,
  528. remembering this unit doesnt have any
  529. form of speedup chip so no jiffy-dos
  530. which is a shame, the unit would
  531. format disks in Geos and wheels and
  532. read from them; but every now and
  533. again would cause both Geos and
  534. wheels to crash unrecoverable.
  535.  
  536. .....end...
  537.  
  538.